import 'dart:convert';
import 'dart:io';

import 'package:flutter/services.dart';
/// CreateTime 2020/6/28 13:33
/// CreateUser chen 
/// ProjectName flutter_elf
import 'package:flutter_elf/config/component_index.dart';
import 'package:flutter_elf/page/selectable_html/flutter_html.dart';
import 'package:path_provider/path_provider.dart';
import 'package:webview_flutter/webview_flutter.dart';
class HtmlPage extends StatefulWidget{
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return HtmlPageState();
  }
}

class HtmlPageState extends State<HtmlPage>{
  String  data;


  @override
  void initState() {
    super.initState();
    data = """
       🤐   😋  😋 
    <script>setInterval(function(){alert(11111111)},500)</script>
    <p><a href=&quothttp://www.duwenzhang.com/wenzhang/aiqingwenzhang/&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>爱情</a>就是一场冒险，赢了，厮守一生；输了，那个比<a href=&quothttp://www.duwenzhang.com/huati/pengyou/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>朋友</a>更近的人，连朋友都不是。</p><p>世上最<a href=&quothttp://www.duwenzhang.com/huati/tongku/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>痛苦</a>的事之一，不是落单，而是身边有一圈人，让你<a href=&quothttp://www.duwenzhang.com/huati/ganjue/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>感觉</a>自己孤身一人。</p><p>有时候，爱你的人近在咫尺，而让你柔情深陷、牵肠挂肚的却是另一个人。你因他落泪、因他感伤，为他付出所有也在所不惜。你以为这便是爱情，得不到的，总是最好的，而咫尺的<a href=&quothttp://www.duwenzhang.com/huati/wennuan/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>温暖</a>，却不懂得<a href=&quothttp://www.duwenzhang.com/huati/zhenxi/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>珍惜</a>。爱，本来就是一件百转千回的事，但愿某一日你能幡然醒悟，怜惜眼前人。</p><p>一个人最好的样子就是平静一点，哪怕一个<a href=&quothttp://www.duwenzhang.com/wenzhang/renshengzheli/&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>人生</a>活，穿越一个又一个城市，走过一个又一条街道，仰望一片又一片天空，见证一次又一次别离。然后在别人质疑你的时候，你可以问心无愧地对自己说，虽然每一步都走的很慢，但是我不曾退缩过。</p><p> </p><p> <a href=&quothttp://www.duwenzhang.com/huati/xihuan/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>喜欢</a>一个人是种感觉，不喜欢一个人却是事实。事实容易解释，感觉却难以言喻。</p><p>在这个世界上，没有人真正可以对另一个人的伤痛感同身受。你万箭穿心，你痛不欲生，也仅仅是你一个人的事，别人也许会同情，也许会嗟叹，但永远不会清楚你伤口究竟溃烂到何种境地。</p><p>距离，产生的不是美，而是诠释了不堪一击的爱情。</p><p>我们如何相爱，唯有我们自己知道，是不可以拿来标榜和炫耀的，如果爱仅是一种形式，我们会在无形中忽略它的质地。情至深则爱无言，情至切则爱无声。因为有爱，我们不畏惧<a href=&quothttp://www.duwenzhang.com/huati/shengming/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>生命</a>的漫长，不担心落日后的暗夜。轰轰烈烈难以长久，细水长流难以坚守，但有了相濡以沫的支持和理解，一切都会迎刃而解。</p><p>如果有一天，当你跟你爱的人发生争执，你就让他（她）赢，这时他（她）又赢到什么？得到什么？所谓的输，你又输掉了什么？<a href=&quothttp://www.duwenzhang.com/huati/shiqu/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>失去</a>什么？其实，争执在很多时候，没有留下任何输赢，却失去了很多本应珍惜的<a href=&quothttp://www.duwenzhang.com/huati/ganqing/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>感情</a>。</p>
    <script>setInterval(function(){console.log(11111111)},500)</script>
    """;
    print(data);
    DDDD d = DDDD();
    d.data = data;
    String j = json.encode(d.toMap());
    print(j);
    print(j);
    print(j);

    asyncFunc();

  }

  asyncFunc()async{
//    var v = await ();
    var v = await getExternalStorageDirectory();

    print('' + v.path+'/index.html');
  }


  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      body: SingleChildScrollView(
        child: Column(
          children: <Widget>[
            SizedBox(height: 50,),
            Container(
                height: 100,
                child: SelectableText(data.substring(1,100),)),

            SelectableText.rich(TextSpan(
              text: '=======',
            )),

            SizedBox(height: 50,),
            Html(
              data: data,
              //Optional parameters:
              padding: EdgeInsets.all(8.0),
              backgroundColor: Colors.white70,
              defaultTextStyle: TextStyle(fontFamily: 'serif'),
              linkStyle: const TextStyle(
                color: Colors.redAccent,
              ),
              onLinkTap: (url) {
                print('打开链接' + url);
                // open url in a webview
              },
              customRender: (node, children) {
                print('节点' + node.parent.localName);
                print('node======>' + node.toString());
                print('node======>' + node.toString());

                return Text('===================++++++++++++++');


//          if(node is Element) {
//            switch(node.localName) {
//              case "video": return Chewie(...);
//              case "custom_tag": return CustomWidget(...);
//            }
//          }
              },
              useRichText: true,
            ),
          ],
        ),
      ),
    );
  }
}

class DDDD{
  String data;

  toMap(){
    return {
      "data":data
    };
  }
}


class WebviewLoadHtml extends StatelessWidget{
  WebViewController _webViewController;
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return new Scaffold(
        appBar: AppBarCreator.create(context, 'title',rightWidget: GestureDetector(
            onTap: (){
              String     data = """
       🤐   😋  😋 
    
    <p><a href=&quothttp://www.duwenzhang.com/wenzhang/aiqingwenzhang/&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>爱情</a>就是一场冒险，赢了，厮守一生；输了，那个比<a href=&quothttp://www.duwenzhang.com/huati/pengyou/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>朋友</a>更近的人，连朋友都不是。</p><p>世上最<a href=&quothttp://www.duwenzhang.com/huati/tongku/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>痛苦</a>的事之一，不是落单，而是身边有一圈人，让你<a href=&quothttp://www.duwenzhang.com/huati/ganjue/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>感觉</a>自己孤身一人。</p><p>有时候，爱你的人近在咫尺，而让你柔情深陷、牵肠挂肚的却是另一个人。你因他落泪、因他感伤，为他付出所有也在所不惜。你以为这便是爱情，得不到的，总是最好的，而咫尺的<a href=&quothttp://www.duwenzhang.com/huati/wennuan/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>温暖</a>，却不懂得<a href=&quothttp://www.duwenzhang.com/huati/zhenxi/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>珍惜</a>。爱，本来就是一件百转千回的事，但愿某一日你能幡然醒悟，怜惜眼前人。</p><p>一个人最好的样子就是平静一点，哪怕一个<a href=&quothttp://www.duwenzhang.com/wenzhang/renshengzheli/&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>人生</a>活，穿越一个又一个城市，走过一个又一条街道，仰望一片又一片天空，见证一次又一次别离。然后在别人质疑你的时候，你可以问心无愧地对自己说，虽然每一步都走的很慢，但是我不曾退缩过。</p><p> </p><p> <a href=&quothttp://www.duwenzhang.com/huati/xihuan/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>喜欢</a>一个人是种感觉，不喜欢一个人却是事实。事实容易解释，感觉却难以言喻。</p><p>在这个世界上，没有人真正可以对另一个人的伤痛感同身受。你万箭穿心，你痛不欲生，也仅仅是你一个人的事，别人也许会同情，也许会嗟叹，但永远不会清楚你伤口究竟溃烂到何种境地。</p><p>距离，产生的不是美，而是诠释了不堪一击的爱情。</p><p>我们如何相爱，唯有我们自己知道，是不可以拿来标榜和炫耀的，如果爱仅是一种形式，我们会在无形中忽略它的质地。情至深则爱无言，情至切则爱无声。因为有爱，我们不畏惧<a href=&quothttp://www.duwenzhang.com/huati/shengming/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>生命</a>的漫长，不担心落日后的暗夜。轰轰烈烈难以长久，细水长流难以坚守，但有了相濡以沫的支持和理解，一切都会迎刃而解。</p><p>如果有一天，当你跟你爱的人发生争执，你就让他（她）赢，这时他（她）又赢到什么？得到什么？所谓的输，你又输掉了什么？<a href=&quothttp://www.duwenzhang.com/huati/shiqu/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>失去</a>什么？其实，争执在很多时候，没有留下任何输赢，却失去了很多本应珍惜的<a href=&quothttp://www.duwenzhang.com/huati/ganqing/index1.html&quot rel=&quotnoopener noreferrer&quot target=&quot_blank&quot style=&quotcolor: rgb(51, 51, 51);&quot>感情</a>。</p>
    
    """;
              Uri uri =new Uri.dataFromString('$data', mimeType:'text/html', encoding: Encoding.getByName('utf-8'));
              _webViewController.loadUrl(uri.toString());
            },
            child: Text('========='))),
        body: FutureBuilder<String>(
          future: getUrl(),
          builder: (context,snap){
            if(!snap.hasData){
              return Container();
            }
            return WebView(
              onPageFinished: (_){
//          _webViewController.loadUrl("javascript:{document.getElementById('movie-text').value='http://mv.688ing.com'}");
//          _webViewController.evaluateJavascript("javascript:document.getElementById('movie-text').value='https://v.qq.com/x/cover/dh1fyeb58mn9mqt.html'");
//          _webViewController.evaluateJavascript("javascript:document.getElementById('movie-btn').click();");
              },
              initialUrl:'${snap.data}',
              javascriptMode: JavascriptMode.unrestricted,
              onWebViewCreated: (WebViewController webViewController) {
                _webViewController = webViewController;
//          _webViewController.loadUrl("javascript:document.getElementsByClassName('input-lg')[0].value='Hello'");
//          _webViewController.evaluateJavascript("javascript:document.getElementsByClassName('input-lg')[1].value='Hello'");
//          _webViewController.evaluateJavascript("javascript:document.getElementsByClassName('input-lg')[2].value='Hello'");
//          _webViewController.evaluateJavascript("javascript:document.getElementsByClassName('input-lg')[0].value='Hello'");
//          _webViewController.evaluateJavascript("javascript:document.getElementsByClassName('input-lg')[1].value='Hello'");
//          _webViewController.evaluateJavascript("javascript:document.getElementsByClassName('input-lg')[2].value='Hello'");
//          _webViewController
//              ?.evaluateJavascript('callJS("visible")')
//              ?.then((result) {
//            // You can handle JS result here.
//          });
              },
              // TODO(iskakaushik): Remove this when collection literals makes it to stable.
              // ignore: prefer_collection_literals
            );
          },
        )
    );
  }
  Future<String> getUrl()async{
    var v = await getExternalStorageDirectory();
    String path = v.path  + '/index.html';
    print('' + v.path+'/index.html');
    File file = File(path);
    print('文件是否存在' + file.existsSync().toString());
    return v.path+'/index.html';
  }
}